home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #12 / Amiga Plus CD - 2002 - No. 12.iso / Tools / Freeware / PerfectPaint / rexx / general / Snake.rx < prev    next >
Encoding:
Text File  |  2002-03-16  |  3.2 KB  |  133 lines

  1. /*
  2.     Simples Snake fuer PerfectPaint.
  3.     Made by Saint
  4.         V1.0
  5. */
  6.  
  7.  
  8.   options results
  9.   parse ARG Port b
  10.  
  11.     ADDRESS value Port    
  12.     pp_findemptybuffer
  13.     buf=result
  14.     pp_setbuffer buf
  15.     maxx=300
  16.     maxy=300
  17.     pp_new maxx maxy 24
  18.  
  19.     address command
  20.     sfile='PerfectPaint:temp/con.rx'
  21.     if EXISTS(sfile) THEN DO
  22.         ADDRESS COMMAND
  23.         'delete >nil: '||sfile
  24.     END
  25.     IF OPEN('pfile',sfile,'W') THEN DO
  26.         CALL WRITELN('pfile','/**/')
  27.         CALL WRITELN('pfile','if open(con,"RAW:400/400/100/100/PerfectSnake/SCREENPerfect_Paint.1//NOCLOSE/NOSIZE/NOPROPy/ON",RW) then do /*Raw: Fenster oeffnen - Raw: um Tastendruecke zu bekommen*/')
  28.         CALL WRITELN('pfile','setclip("break",0)')
  29.         CALL WRITELN('pfile','x=1')
  30.         CALL WRITELN('pfile','y=0')
  31.         CALL WRITELN('pfile','do while getclip("break")~=1')
  32.     CALL WRITELN('pfile','p=c2d(readch(con))')
  33.     CALL WRITELN('pfile','if p=65 & y=0 then DO /*oben*/')
  34.     CALL WRITELN('pfile','    setclip("richtx",0)')
  35.     CALL WRITELN('pfile','    setclip("richty",-1)')
  36.     CALL WRITELN('pfile','    y=-1')
  37.     CALL WRITELN('pfile','    x=0')
  38.     CALL WRITELN('pfile','    END')
  39.     CALL WRITELN('pfile','if p=66 & y=0 then DO')
  40.     CALL WRITELN('pfile','    setclip("richtx",0)')
  41.     CALL WRITELN('pfile','    setclip("richty",1)')
  42.     CALL WRITELN('pfile','    y=1')
  43.     CALL WRITELN('pfile','    x=0')
  44.     CALL WRITELN('pfile','    END')
  45.     CALL WRITELN('pfile','if p=67 & x=0 then DO')
  46.     CALL WRITELN('pfile','    setclip("richtx",1)')
  47.     CALL WRITELN('pfile','    setclip("richty",0)')
  48.     CALL WRITELN('pfile','    y=0')
  49.     CALL WRITELN('pfile','    x=1')
  50.     CALL WRITELN('pfile','    END')
  51.     CALL WRITELN('pfile','if p=68 & x=0 then DO')
  52.     CALL WRITELN('pfile','    setclip("richtx",-1)')
  53.     CALL WRITELN('pfile','    setclip("richty",0)')
  54.     CALL WRITELN('pfile','    y=0')
  55.     CALL WRITELN('pfile','    x=-1')
  56.     CALL WRITELN('pfile','    END')
  57.     CALL WRITELN('pfile','end')
  58.     CALL WRITELN('pfile','close(con)')
  59.         CALL WRITELN('pfile','end')
  60.         CALL WRITELN('pfile','exit')
  61.         CALL WRITELN('pfile','end')
  62.         CALL CLOSE('pfile')
  63.     END
  64.     "run rx perfectpaint:temp/con.rx"
  65.  
  66.     ADDRESS value Port       
  67.  
  68.     breite=4
  69.     schwer=5
  70.     pp_pensize breite
  71.     lang=10
  72.     x=1
  73.     y=1
  74.     points=0
  75.     setclip("richtx",1)
  76.     setclip("richty",0)
  77.        /*links =-1
  78.         rechts=1
  79.         oben  =-1
  80.         unten =1*/
  81.     break=0
  82.     c=0
  83.     call pill()
  84.     do while break~=1
  85.     c=c+1
  86.     xpos.c=x
  87.     ypos.c=y
  88.     pp_setapen 1
  89.     pp_plot breite*x breite*y
  90.     st=c-lang
  91.     if xpos.st~="XPOS."||st then dO
  92.         call vergleich()
  93.         pp_setapen 0
  94.         pp_plot breite*xpos.st breite*ypos.st
  95.         end
  96.     x=x+getclip("richtx")
  97.     y=y+getclip("richty")
  98.     if y>(maxy/breite) | y<0 | x<0 | x>(maxx/breite) then DO
  99.         break=1
  100.         END
  101.     end
  102. setclip("break",1)
  103. pp_clearbuffer buf
  104. pp_asay "Erreichte*Punktzahl:*" || points
  105. address command wait 5
  106. pp_closeasay
  107. exit
  108.  
  109. vergleich:
  110. do i=2 to lang
  111.     p=c-i
  112.     if xpos.p=x then DO
  113.         if ypos.p=y then DO
  114.             break=1 /*Schlange hat sich gebissen*/
  115.         END
  116.     END
  117. END
  118. if x=pillx & y=pilly then DO
  119.     points=points+20
  120.     call pill()
  121.     lang=lang+schwer
  122.     st=c-lang
  123.     end
  124. return 0
  125.  
  126. pill:
  127. pillx=random(1,maxx/breite,time(s))
  128. pilly=random(1,maxy/breite,time(s))
  129. pp_setapen 3
  130. pp_plot breite*pillx breite*pilly
  131. ppsetapen 1
  132. return 0
  133.